1. Field of the Invention
The present invention relates generally to data processing and, more specifically, to object-oriented programming systems and processes.
2. Description of the Related Art
Application programs are sequences of program instructions that are executed on programmable, general purpose computers to perform problem-solving tasks. Application programs are very important within the computer industry because they allow users of the computer system to perform meaningful work. In fact, application programs are so important that the ultimate value of the whole computer system is often judged based on the quality and number of application programs that it can execute.
Application programs can be developed to aid computer system users in a wide variety of tasks. For example, there have been many application programs written to aid users in tasks that are related to banking, inventory control, and scientific analysis. Typically, application programs are developed by individuals or teams of individuals in a way that addresses the specific problem at hand. However, developing an application program is not an easy process. Indeed, the process of developing application programs is fraught with many inherent pitfalls.
One problem is that each application program typically requires different types of data to be maintained and different manipulations to be performed on the data. For example, banking transactions must be confirmed and logged, inventory orders must be validated, and scientific operations must be checked for errors. As a result, application programs are often designed to be unique unto themselves. That is, the program instructions are application-dependent even though the low-level tasks performed by different application programs all involve the storage, retrieval, and manipulation of data. Of course, this not only is wasteful but also leads to the additional problem of having to maintain a series of application programs that all store, retrieve, and manipulate data in different ways.
Another problem associated with application program development is that communication between different application programs is often difficult. Communication between present day application programs is usually accomplished through what are referred to as application program interfaces or APIs for short. Since APIs rigidly define both the manner in which data can be exchanged and the particular items of data that can be exchanged, it is sometimes difficult to change an application program to handle different data or to make a previously created application program communicate with a new application program.
Adding features to application programs is yet another problem because the entire application program must typically be recompiled to activate the new feature. This is a daunting task because many application programs include literally tens of thousands of lines of programming instructions, which means that recompilation can be an extremely long process.
Still another problem with application program development is extending or modifying an existing application program so that it can take advantage of a new programming development. For example, modifying an application program that was originally designed to execute on a single processor computer system such that it could operate on a multiprocessor system can involve considerable effort and a substantial amount of redesign.
From the discussion above, it should be apparent that there is a need for an application program development mechanism that allows for the development of application programs that 1) do not involve duplication of effort to perform common tasks, 2) do not place heavy burdens on program maintenance, and 3) permit the addition of program features without requiring total recompilation and/or redesign. Moreover, there is a need for an application program development mechanism that provides a standard program interface that facilitates communication between application programs. The present invention satisfies these needs.